/**
 * 
 */
package com.primestone.cim.executeenddevicecontrols;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.Holder;

import ch.iec.tc57._2011.enddevicecontrolsmessage.EndDeviceControlsPayloadType;
import ch.iec.tc57._2011.schema.message.HeaderType;
import ch.iec.tc57._2011.schema.message.ReplyType;
import ch.iec.tc57._2011.schema.message.RequestType;

/**
 * @author cesar.mateus
 *
 */
@XmlRootElement
@XmlSeeAlso({EndDeviceControlsPayloadType.class})
public class QueueMessage implements Serializable {

	private static final long serialVersionUID = -1468345691906349354L;
	
	private Holder<HeaderType> header;
	private RequestType request;
	private Holder<EndDeviceControlsPayloadType> payload; 
	private Holder<ReplyType> reply;
	
	public QueueMessage() {
		
	}
	
	/**
	 * @param header
	 * @param request
	 * @param payload
	 * @param reply
	 */
	public QueueMessage(Holder<HeaderType> header,
			RequestType request,
			Holder<EndDeviceControlsPayloadType> payload, Holder<ReplyType> reply) {
		super();
		this.header = header;
		this.request = request;
		this.payload = payload;
		this.reply = reply;
	}
	
	/**
	 * @return the header
	 */
	public Holder<HeaderType> getHeader() {
		return header;
	}
	/**
	 * @param header the header to set
	 */
	public void setHeader(Holder<HeaderType> header) {
		this.header = header;
	}
	/**
	 * @return the request
	 */
	public RequestType getRequest() {
		return request;
	}
	/**
	 * @param request the request to set
	 */
	public void setRequest(RequestType request) {
		this.request = request;
	}
	/**
	 * @return the payload
	 */
	public Holder<EndDeviceControlsPayloadType> getPayload() {
		return payload;
	}
	/**
	 * @param payload the payload to set
	 */
	public void setPayload(Holder<EndDeviceControlsPayloadType> payload) {
		this.payload = payload;
	}
	/**
	 * @return the reply
	 */
	public Holder<ReplyType> getReply() {
		return reply;
	}
	/**
	 * @param reply the reply to set
	 */
	public void setReply(Holder<ReplyType> reply) {
		this.reply = reply;
	}
	
}
